import log4js from "log4js";
import path from "path";


function getCommonAppender( dir: string ){
    return {
        type: "dateFile", //日志文件会自动添加时间 logging.2023-04-27.log 其他和file一样
        filename: path.resolve(__dirname, "logs", dir, "logging.log"),
        keepFileExt: true, //保留日志文件的后缀
        maxLogSize: 1024 * 1024, //文件最大内存
        backups: 3, //保存n天的日志，0表示不限制
        layout: {
            type: "pattern",
            pattern: "%d{yyyy-MM-dd hh:mm:ss} [%p]: %m%n", //日志记录格式
        },
    }
}


log4js.configure({
    appenders: {
        file: getCommonAppender("file"),
        sql: getCommonAppender("sql"), //定义一个日志出口
        api: getCommonAppender("api"), //定义一个日志出口

        default: {
            type: "file",
            filename: path.resolve(__dirname, "logs", "default", "logging.log"),
        },
    },
    categories: {
        sql: {
            appenders: ["sql"], //该分类使用出口sql的配置写入日志
            level: "all",
        },
        file: {
            appenders: ["file"], //该分类使用出口sql的配置写入日志
            level: "all",
        },
        api: {
            appenders: ["api"], //该分类使用出口sql的配置写入日志
            level: "all",
        },
        default: {
            appenders: ["default"], //该分类使用出口sql的配置写入日志
            level: "all",
        },
    },
});

process.on("exit", () => {
    log4js.shutdown(); //如果异常退出且日志没有记录完，会把日志记录完成之后退出
});

export const fileLog = log4js.getLogger("file");
export const sqlLog = log4js.getLogger("sql");
export const apiLogger = log4js.getLogger("api")
